/**
 * a标签的download属性无法对跨域的文件重命名
 * 使用XMLHttpRequest下载文件blob后，使用a标签下载blob并重命名
 * */
const getBlob = (url, cb) => {
  const xhr = new XMLHttpRequest();
  xhr.open("GET", url, true);
  xhr.responseType = "blob";
  xhr.onload = function () {
    if (xhr.status === 200) {
      cb(xhr.response);
    }
  };
  xhr.send();
};

// 保存
// @param  {Blob} blob
// @param  {String} filename 想要保存的文件名称
const saveAs = (blob, filename) => {
  if (window.navigator.msSaveOrOpenBlob) {
    navigator.msSaveBlob(blob, filename);
  } else {
    const link = document.createElement("a");
    const body = document.querySelector("body");

    link.href = window.URL.createObjectURL(blob);
    link.download = filename;

    // fix Firefox
    link.style.display = "none";
    body.appendChild(link);

    link.click();
    body.removeChild(link);

    window.URL.revokeObjectURL(link.href);
  }
};

// 下载
// @param  {String} url 目标文件地址
// @param  {String} filename 想要保存的文件名称
export const downloadBlobByUrl = (url, filename) => {
  getBlob(url, (blob) => {
    saveAs(blob, filename);
  });
};
